YES 0.677 H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/empty.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:



HASKELL
  ↳ LR

mainModule Main
  ((unzip3 :: [(b,c,a)]  ->  ([b],[c],[a])) :: [(b,c,a)]  ->  ([b],[c],[a]))

module Main where
  import qualified Prelude



Lambda Reductions:
The following Lambda expression
\(a,b,c)~(as,bs,cs)→(a : as,b : bs,c : cs)

is transformed to
unzip30 (a,b,c) ~(as,bs,cs) = (a : as,b : bs,c : cs)



↳ HASKELL
  ↳ LR
HASKELL
      ↳ IPR

mainModule Main
  ((unzip3 :: [(b,c,a)]  ->  ([b],[c],[a])) :: [(b,c,a)]  ->  ([b],[c],[a]))

module Main where
  import qualified Prelude



IrrPat Reductions:
The variables of the following irrefutable Pattern
~(as,bs,cs)

are replaced by calls to these functions
unzip300 (as,bs,cs) = as

unzip301 (as,bs,cs) = bs

unzip302 (as,bs,cs) = cs



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ IPR
HASKELL
          ↳ BR

mainModule Main
  ((unzip3 :: [(b,a,c)]  ->  ([b],[a],[c])) :: [(b,a,c)]  ->  ([b],[a],[c]))

module Main where
  import qualified Prelude



Replaced joker patterns by fresh variables and removed binding patterns.

↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ IPR
        ↳ HASKELL
          ↳ BR
HASKELL
              ↳ COR

mainModule Main
  ((unzip3 :: [(c,b,a)]  ->  ([c],[b],[a])) :: [(c,b,a)]  ->  ([c],[b],[a]))

module Main where
  import qualified Prelude



Cond Reductions:
The following Function with conditions
undefined 
 | False
 = undefined

is transformed to
undefined  = undefined1

undefined0 True = undefined

undefined1  = undefined0 False



↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ IPR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
HASKELL
                  ↳ Narrow

mainModule Main
  (unzip3 :: [(a,c,b)]  ->  ([a],[c],[b]))

module Main where
  import qualified Prelude



Haskell To QDPs


↳ HASKELL
  ↳ LR
    ↳ HASKELL
      ↳ IPR
        ↳ HASKELL
          ↳ BR
            ↳ HASKELL
              ↳ COR
                ↳ HASKELL
                  ↳ Narrow
QDP
                      ↳ QDPSizeChangeProof

Q DP problem:
The TRS P consists of the following rules:

new_foldr(:(vy30, vy31), ba, bb, bc) → new_foldr(vy31, ba, bb, bc)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs: